上位フィールドから下位フィールドに行くに従ってリレーションの条件をandでつないで絞っていくだけでは、常に最上位フィールドから順に設定していかねばならず、途中のフィールドだけ、また、途中を飛ばしてドロップダウンさせることは出来ません。
そこで全てのフィールド値を、KW+改行+「−」という形にしています。KWを設定しない箇所は、スクリプトで強制的に「−」を設定します。
こうすることでKWまたは「−」のどちらかでリレーションが成立します。
FileMaker Helpの「リレーションシップの照合フィールドについて」に、下記の説明があります。
リレーションシップの照合フィールドについて
・
・
・
照合フィールドに複数の値を改行で区切って入力することにより、一致する可能性のある値の数を増やすことができます。
リレーションシップ条件に従って、照合フィールドの任意の1行に一致すれば、関連データにアクセスすることができます。
これを、マルチキーフィールド、または複合キーフィールドと呼ぶこともあります。
たとえば、各テーブルの1つのフィールドの内容に基づいてテーブル A のレコードとテーブル B を結合する簡単なリレーションシップがあり、テーブル A の照合フィールドには、改行で区切られた次の値が含まれるとします。
赤
緑
青
この場合、対応する照合フィールドに「赤」、「緑」、または「青」のいずれか1つの値が含まれる、テーブル B のすべてのレコードが一致します。 ただし、照合フィールドに「赤 緑 青」の値が含まれるレコードは返されません。 改行があることで、各行が個別の値として処理されます。
【Patent DB】の全てのKWに、各レコード固有のKWに加えて、改行+「−」(ハイフン)を入力しておきます。
KWに、改行で区切って、全レコードに共通の値として「−」(ハイフン)を入力という形です。
「−」(ハイフン)は、目立たないように、色を背景と同じ白にしています。
これもスクリプトで自動的にメンテできるようにしています。
検索条件入力画面では、KW入力を飛ばして空欄としたところには、スクリプトで共通値:「−」(ハイフン)を入力します。
これで、検索を実行した際に、KWが入力されているフィールドはそのKWを、KW入力の無いフィールドは全レコード共通の「−」(ハイフン)を検索します。
この仕組みによって、検索条件設定時、途中のフィールドから、また、途中を飛ばしてもその下位フィールドでドロップダウンが機能します。
次は、これらドロップダウンさせるスクリプト。